package com.qiche.util;

import java.util.Random;
import java.util.UUID;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * ApplicationUtils : 程序工具类，提供大量的便捷方法
 *
 * @author zhangds
 * @since 2014-09-28 22:31
 */
public class ApplicationUtils {

    /**
     * 产生一个36个字符的UUID
     *
     * @return UUID
     */
    public static String randomUUID() {
        return UUID.randomUUID().toString();
    }

    /**
     * md5加密
     *
     * @param value 要加密的值
     * @return md5加密后的值
     */
    public static String md5Hex(String value) {
        Math.random();
        return DigestUtils.md5Hex(value);
    }

    /**
     * sha1加密
     *
     * @param value 要加密的值
     * @return sha1加密后的值
     */
    public static String sha1Hex(String value) {
        return DigestUtils.sha1Hex(value);
    }

    /**
     * sha256加密
     *
     * @param value 要加密的值
     * @return sha256加密后的值
     */
    public static String sha256Hex(String value) {
        return DigestUtils.sha256Hex(value);
    }
    /**
     * 生成指定区间随机数字
     *
     * @param Min
     * @param Max
     * @return
     */
    public static Integer getNumInt(int Min, int Max) {
        return Min + (int) (Math.random() * ((Max - Min) + 1));
    }
    /**
     * 生成指步长定区间随机数字
     *
     * @param Min
     * @param Max
     * @param x
     * @return
     */
    public static Integer getNumInt(int Min, int Max,int x) {

        Max = Max/x;
        Integer result = Min + (int) (Math.random() * ((Max - Min) + 1));
        return result*x;
    }

    /**
     * 生成指定区间随机数字
     *
     * @param Min
     * @param Max
     * @return
     */
    public static Long getNumLong(int Min, int Max) {
        return new Long(getNumInt(Min,Max));
    }

    /**
     * 生成指定区间指定步长随机数字
     *
     * @param Min
     * @param Max
     * @return
     */
    public static Long getNumLong(int Min, int Max,int x) {
        return new Long(getNumInt(Min,Max,x));
    }

    /**
     * 生成指定长度字符串方法
     *
     * @param length
     * @return
     */
    public static String getRandomString(int length) { //length表示生成字符串的长度
        String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(base.length());
            sb.append(base.charAt(number));
        }
        return sb.toString();
    }


    public static void main(String[] args){

        for(int i=0;i<100;i++){
            System.out.println(getNumInt(1,20,1));
        }
    }
}
